gtkmenu: fix unnecessary scroll buttons
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>
Fri, 31 Oct 2014 01:10:13 +0000 (03:10 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 3 Nov 2014 03:11:03 +0000 (22:11 -0500)
Don't change menu height if menu is out of monitor only by shadow
width.

https://bugzilla.gnome.org/show_bug.cgi?id=738321

gtk/gtkmenu.c

index 1dab98c59f77aaa0d23665a8a355a720f938f128..6862ca994e0fb6448f8d858c723d81ccd0a0ac39 100644 (file)
@@ -3339,6 +3339,7 @@ gtk_menu_get_preferred_height_for_width (GtkWidget *widget,
     {
       GdkScreen *screen = gtk_widget_get_screen (priv->toplevel);
       GdkRectangle monitor;
+      GtkBorder border;
 
       gdk_screen_get_monitor_workarea (screen, priv->monitor_num, &monitor);
 
@@ -3348,10 +3349,12 @@ gtk_menu_get_preferred_height_for_width (GtkWidget *widget,
       if (priv->position_y + nat_height > monitor.y + monitor.height)
         nat_height = monitor.y + monitor.height - priv->position_y;
 
-      if (priv->position_y < monitor.y)
+      _gtk_window_get_shadow_width (GTK_WINDOW (priv->toplevel), &border);
+
+      if (priv->position_y + border.top < monitor.y)
         {
-          min_height -= monitor.y - priv->position_y;
-          nat_height -= monitor.y - priv->position_y;
+          min_height -= monitor.y - (priv->position_y + border.top);
+          nat_height -= monitor.y - (priv->position_y + border.top);
         }
     }